package com.nine.algorithm.queue;

/**
 * @author nine
 * @version 1.0
 * @description 队列接口
 * @date 24/5/8 23:15
 */
public interface Queue<E> {

	/**
	 * 向队列尾插入值
	 *
	 * @param value 待插入值
	 * @return 插入成功返回true，失败false
	 */
	boolean offer(E value);


	/**
	 * 从队列头获取值，并移除
	 *
	 * @return 如果队列非空，返回对头值，否则null
	 */
	E poll();

	/**
	 * 从队列头获取值，不移除
	 *
	 * @return 如果队列非空，返回对头值，否则null
	 */
	E peek();

	/**
	 * 检查队列是否为空
	 *
	 * @return 空：true，非空：false
	 */
	boolean isEmpty();

	/**
	 * 检查队列是否已满
	 *
	 * @return 满，返回true，否则false
	 */
	boolean isFull();

}
